package filtro;

import br.com.modelo.Operador;
import dadosUsuarioLogado.UsuarioLogado;
import java.io.IOException;
import java.io.Serializable;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter, Serializable {

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpSession session = req.getSession();

        Object obj = session.getAttribute("usuarioLogado");

        //esta logado OU estamos chamando a tela de login
        if (obj != null || req.getRequestURI().endsWith("login.jsf")) {
            Boolean passou = false;
            if (obj != null) {
//                verifica se o usuario � administrador para acessar a pagina de cadastro de usuario, se n�o for redireciona para o template.jsf 
                if (req.getRequestURI().endsWith("/usuario/add.jsf")) {
                    Operador usu = UsuarioLogado.retornaUsuarioLogado();
                    if (usu != null) {
                        if (!UsuarioLogado.retornaUsuarioLogado().getIdEcfFuncionario().getNivelAutorizacao().toString().equals("O")) {
                            HttpServletResponse res = (HttpServletResponse) response;
                            res.sendRedirect(req.getContextPath() + "/template.jsf");
                            passou = true;
                        }
                    }
                }
            }
            if (!passou) {
                String s = req.getRequestURI();
//                System.out.println("--> LOGADO COM SUCESSO. REDIRECIONANDO PARA O FLUXO NORMAL : URL--> " + s);
                //continuar o fluxo
                chain.doFilter(request, response);
            }
        } else {
//			System.out.println("--> NAO ESTA LOGADO. REDIRECIONANDO PARA PAGINA DE LOGIN");
            //nao esta logado ou sessao expirada
            //retorna para pagina de login
            HttpServletResponse res = (HttpServletResponse) response;
            res.sendRedirect(req.getContextPath() + "/login.jsf");
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
}
